#include "mylabel.h"
#include <QDebug>  // 用于输出调试信息
#include <QPalette>  // 用于修改标签样式
#include <QMouseEvent>
// 构造函数：初始化基类 QLabel
MyLabel::MyLabel(QWidget *parent)
    : QLabel(parent)  // 传统初始化语法（与 QLabel{parent} 功能一致）
{
    // 初始化标签样式（示例：设置初始文本和边框）
    setText("鼠标未进入");
    setAlignment(Qt::AlignCenter);  // 文本居中
    setStyleSheet("border: 2px solid gray; padding: 10px;");  // 边框样式
}

// 鼠标进入事件：当鼠标移入标签区域时触发
void MyLabel::enterEvent(QEnterEvent *event)
{
    // 1. 输出调试信息
    qDebug() << "鼠标进入标签区域";

    // 2. 改变标签样式（示例：修改文本和背景色）
    setText("鼠标已进入");
    setStyleSheet("border: 2px solid blue; background-color: lightblue; padding: 10px;");

    // 3. 传递事件给父类（确保默认行为正常执行，可选）
    QLabel::enterEvent(event);  // 调用基类的事件处理函数
}

// 鼠标离开事件：当鼠标移出标签区域时触发
void MyLabel::leaveEvent(QEvent *event)
{
    // 1. 输出调试信息
    qDebug() << "鼠标离开标签区域";

    // 2. 恢复标签样式
    setText("鼠标未进入");
    setStyleSheet("border: 2px solid gray; padding: 10px;");

    // 3. 传递事件给父类（确保默认行为正常执行，可选）
    QLabel::leaveEvent(event);  // 调用基类的事件处理函数
}

void MyLabel::mousePressEvent(QMouseEvent* ev)
{
    // //Qt中的格式化字符串
    // QString str1 = QString("鼠标按下了 x = %1, y = %2").arg(ev->x()).arg(ev->y());
    // qDebug() << str1;

    //鼠标左键
    if(ev->button() == Qt::LeftButton)
    {
        //x, y是基于窗口的坐标
        QString str = QString("鼠标左键：x = %1,  y = %2").arg(ev->x()).arg(ev->y());
        qDebug() << str.toUtf8().data();
    }

    //鼠标右键
    if(ev->button() == Qt::RightButton)
    {
        //x, y是基于窗口的坐标
        QString str = QString("鼠标右键：x = %1,  y = %2").arg(ev->x()).arg(ev->y());
        qDebug() << str.toUtf8().data();
    }
}
